\chapter{Besluit}
\label{Besluit}

Het eerste deel van onze thesis bestond uit het testen van Narcissus. Hiervoor hebben we een bestaande testsuite\cite{ecmatest} zo aangepast dat 
zijn tests in Narcissus uitgevoerd konden worden. Verder hebben we tijdens het eerste deel van onze thesis verschillende problemen die er nog waren bij Narcissus
opgelost. Dit heeft ons ook geholpen om een beter inzicht te krijgen in Narcissus.

Tijdens het tweede deel van de thesis hebben we het prototype ge\"implementeerd, we hebben verschillende manieren om functies af te schermen binnenin Narcissus
uitgeprobeerd om tot bij onze uiteindelijke oplossing terecht te komen. We hebben nagedacht over verschillende mogelijke aanvallen
tegen ons systeem, hiervoor hebben we ons laten inspireren door verschillende gerelateerde research papers en artikels  
\cite{XSScheatsheet} \cite{cajalimit} \cite{conscript} \cite{caja} \cite{webjail}. Buiten de code van Narcissus is er geen externe code gebruikt.

De testsuite werd opnieuw uitgevoerd nadat alle aanpassingen aan Narcissus gemaakt waren. Uit de testresultaten blijkt dat er geen extra tests falen door de door ons doorgevoerde aanpassingen in Narcissus. De testsuite test wel enkel voor standaard JavaScript 
functionaliteiten en niet de functionaliteiten die door de policies afgeschermd kunnen worden.
De effecten van verschillende policies worden dus niet getest, maar de aanpassingen hebben in ieder geval geen nieuwe fouten in Narcissus veroorzaakt.

Dat de gewenste operaties degelijk afgeschermd worden, is getest door een aantal sunny days scenario's te testen voor elke operatie.

\pagebreak

\section{Verwezenlijkingen}

We hebben mits sommige beperkingen in grote lijnen onze doelstellingen kunnen bereiken. Het prototype kan gebruikt worden om
policies toe te passen \emph{D3} die bepaalde functionaliteiten af schermen\emph{D1}. Dit zonder dat er client-side aanpassingen nodig zijn \emph{D4} of dat de code van de componenten herschreven hoeft te worden \emph{D2}.
Zo combineert het prototype het voordeel van Webjail \cite{webjail}, waar policies kunnen toegepast worden op code zonder dat deze code herschreven moet worden, met het voordeel van Caja \cite{caja}, waar policies kunnen toegepast worden zonder dat er client-side aanpassingen nodig zijn.

Het afschermen van functies in Narcissus was redelijk eenvoudig omdat Narcissus een relatief kleine codebase heeft en geschreven is in JavaScript. Dit was ook \'e\'en van de redenen waarom we Narcissus gebruikt hebben. We hadden echter wel problemen met de SpiderMonkey context volledig te scheiden van de Narcissus context. Er bleken nog meerdere mogelijkheden te bestaan om uit de sandbox van Narcissus te breken. Deze problemen hadden soms niet zo voor de hand liggende oplossingen. We konden ons voor deze problemen dan ook vaak niet baseren op andere methodes omdat onze aanpak (d.m.v. een JS engine in een JS engine) uniek is.

\section{Conclusie}

Met ons prototype hebben we aangetoond dat het mogelijk is om met Narcissus een veiligheidsarchitectuur te ontwikkelen waarmee policies kunnen afgedwongen worden op JavaScript code. En dit zonder dat aan de client side iets extra moet ge\"installeerd worden of dat er aanpassingen gedaan moeten worden aan de code. Mits enige kennis van JavaScript en de nodige uitleg moet men nu ook in staat zijn zelf nieuwe policies te schrijven. De policies die wij beschreven hebben zijn nog op hoog niveau. Het toevoegen van complexere policies zou ook geen enkel probleem mogen zijn. Dit prototype is oorspronkelijk bedoeld om in een iframe ingeladen te worden en daarin op 1 component een door de integrator bepaalde policy af te dwingen. Het lijkt ons ook mogelijk om Narcissus te gebruiken voor verschillende componenten. Het afdwingen van de policy op de juiste component is hierbij geen grote moeilijkheid meer.
Er zouden bijvoorbeeld meerdere instanties van Narcissus aangemaakt kunnen worden, waarbij elke instantie 
zijn eigen omgeving en policy heeft. Bemerk wel dat onder andere de DOM gedeeld is dan, en dat ook daar oplossingen voor geboden moeten worden. Dit was buiten de scope van de thesis maar zou zeker nog een meerwaarde kunnen bieden aan dit prototype.

Verder mogen we ook best tevreden zijn met de patches die we gedaan hebben voor Narcissus. 
Als ook de testresultaten die we ervoor hebben verzameld. Dit kan toekomstig werk met Narcissus hopelijk vergemakkelijken. 